package com.fowo.api.model.purchase.rgoods.order;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 采购退货单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class PurchaseRgoodsOrderImportPo {

  /** 采购仓库 */
  @ExcelProperty("*采购仓库")
  @NotBlank(message = "采购仓库不能为空")
  @Size(max = 50, message = "采购仓库长度不能超过50")
  private String widName;

  @ExcelIgnore
  @Schema(title = "*采购仓库")
  private String wid;

  /** 退货单号 */
  @ExcelProperty("退货单号")
  private String orderNo;

  /** 创建人 */
  @ExcelProperty("创建人")
  @Size(max = 50, message = "创建人长度不能超过50")
  private String creatorUserName;

  @ExcelIgnore
  @Schema(title = "创建人")
  private String creatorUser;

  /** 创建时间 */
  @ExcelProperty("创建时间")
  @DateTimeString(message = "创建时间不是有效的时间日期格式")
  private String creatorTime;

  /** 供应商 */
  @ExcelProperty("*供应商")
  @NotBlank(message = "供应商不能为空")
  @Size(max = 50, message = "供应商长度不能超过50")
  private String supplierIdSupplierName;

  @ExcelIgnore
  @Schema(title = "*供应商")
  private String supplierId;

  /** 采购单号 */
  @ExcelProperty("采购单号")
  @Size(max = 50, message = "采购单号长度不能超过50")
  private String purchaseOrderCode;

  /** 币种 */
  @ExcelProperty("币种")
  private String purchaseCurrency;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String buyerUidName;

  @ExcelIgnore
  @Schema(title = "采购员")
  private String buyerUid;

  /** 退款方式 */
  @ExcelProperty("退款方式")
  @EnumsString(
    value = { "退货扣款", "退货补货" },
    message = "退款方式只能是“退货扣款”, “退货补货”中的一个"
  )
  private String returnMethod;

  /** 退货运费 */
  @ExcelProperty("退货运费")
  @DecimalString(message = "退货运费小数格式不正确", label = "退货运费")
  private String shippingPrice;

  /** 其他费用 */
  @ExcelProperty("其他费用")
  @DecimalString(message = "其他费用小数格式不正确", label = "其他费用")
  private String otherFee;

  /** 退货时间 */
  @ExcelProperty("退货时间")
  @DateTimeString(message = "退货时间不是有效的时间日期格式")
  private String applicationDate;

  /** 退货原因 */
  @ExcelProperty("退货原因")
  @Size(max = 50, message = "退货原因长度不能超过50")
  private String returnReason;

  /** 申请部门 */
  @ExcelProperty("申请部门")
  @Size(max = 50, message = "申请部门长度不能超过50")
  private String deptName;

  @ExcelIgnore
  @Schema(title = "申请部门")
  private String dept;

  /** 状态 */
  @ExcelProperty("状态")
  @EnumsString(
    value = { "待审批", "已驳回", "已作废", "已处理" },
    message = "状态只能是“待审批”, “已驳回”, “已作废”, “已处理”中的一个"
  )
  private String status;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 500, message = "备注长度不能超过500")
  private String remark;

  /** 标签 */
  @ExcelProperty("标签")
  @Size(max = 50, message = "标签长度不能超过50")
  private String label;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String sidShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String sid;

  /** MSKU/FNSKU */
  @ExcelProperty("MSKU/FNSKU")
  @Size(max = 50, message = "MSKU/FNSKU长度不能超过50")
  private String msku;

  /** 可用品退货量 */
  @ExcelProperty("可用品退货量")
  @IntegerString(message = "可用品退货量数值格式不正确", label = "可用品退货量")
  private String quantityAvailble;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 次品退货量 */
  @ExcelProperty("次品退货量")
  @IntegerString(message = "次品退货量数值格式不正确", label = "次品退货量")
  private String quantityUnavailble;
}
